import Taro, { Component, Config } from '@tarojs/taro';
import { AtList, AtListItem } from 'taro-ui';
import { getRecord } from '../../util/common';

interface IProps {
}

interface IState {
  list: [];

  [propName: string]: any;
}

export default class Record extends Component<IProps, IState> {
  constructor(props: IProps) {
    super(props);
    this.state = {
      list: []
    };
  }

  async componentWillMount() {
    let type = this.$router.params.type;
    this.getRecord(type);
  }

  componentWillUnmount() {
  }

  componentDidShow() {
  }

  componentDidHide() {
  }

  /**
   * 指定config的类型声明为: Taro.Config
   * 由于 typescript 对于 object 类型推导只能推出 Key 的基本类型
   * 对于像 navigationBarTextStyle: 'black' 这样的推导出的类型是 string
   * 提示和声明 navigationBarTextStyle: 'black' | 'white' 类型冲突, 需要显示声明类型
   */
  config: Config = {
    navigationBarTitleText: '记录'
  };

  getRecord(type) {
    const list = getRecord(type);
    this.setState({
      list: list
    });
  }

  handleClick(item) {
    if (item) {
      window.open(item.url, '_blank');
    }
  }

  render() {
    return (
      <AtList>
        {
          this.state.list.map(item => {
            return <AtListItem title={ item.title } arrow='right' onClick={ this.handleClick.bind(this, item) }/>;
          })
        }
      </AtList>
    );
  }
}
